{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "import keras\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "# Sequential按顺序构成的模型\n",
    "from keras.models import Sequential\n",
    "# Dense全连接层\n",
    "from keras.layers import Dense"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 生成数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1be1f8927f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用numpy生成200个随机点\n",
    "\n",
    "# x_data=np.random.rand(100)\n",
    "x_data=np.linspace(-0.5,0.5,200)\n",
    "noise=np.random.normal(0,0.02,x_data.shape)\n",
    "y_data=np.square(x_data)+noise\n",
    "# x_data*0.1+0.2+noise\n",
    "\n",
    "#显示随机点\n",
    "plt.scatter(x_data,y_data)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# x_data=np.linspace(-0.5,0.5,200)\n",
    "# noise=np.random.normal(0,0.02,x_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1be20c98b70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cost 0.017847328\n",
      "cost 0.0069290916\n",
      "cost 0.006178583\n",
      "cost 0.0060393824\n",
      "cost 0.006013564\n",
      "cost 0.006008776\n",
      "cost 0.006007887\n",
      "W [[-0.0031581]] b [0.08289624]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1be20d06160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# import keras\n",
    "# import numpy as np\n",
    "# import matplotlib.pyplot as plt\n",
    "# # Sequential按顺序构成的模型\n",
    "# from keras.models import Sequential\n",
    "# # Dense全连接层\n",
    "# from keras.layers import Dense\n",
    "\n",
    "# # 使用numpy生成100个随机点\n",
    "# x_data=np.random.rand(100)\n",
    "# noise=np.random.normal(0,0.01,x_data.shape)\n",
    "# y_data=x_data*0.1+0.2\n",
    "\n",
    "#显示随机点\n",
    "plt.scatter(x_data,y_data)\n",
    "plt.show()\n",
    "\n",
    "# 构建一个顺序模型\n",
    "model=Sequential()\n",
    "# 在模型中加一个全连接层\n",
    "model.add(Dense(units=1,input_dim=1))\n",
    "# sgd 随机梯度下降法\n",
    "# mse 均方误差\n",
    "model.compile(optimizer='sgd',loss='mse')\n",
    "\n",
    "# 训练30001个批次\n",
    "for step in range(3001):\n",
    "    # 每次训练一个批次\n",
    "    cost=model.train_on_batch(x_data,y_data)\n",
    "    # 每500个打印一次batch\n",
    "    if step%500==0:\n",
    "        print('cost',cost)\n",
    "# 打印权值与偏置值\n",
    "W,b=model.layers[0].get_weights()\n",
    "print('W',W,'b',b)\n",
    "\n",
    "# 输入网络\n",
    "y_pred=model.predict(x_data)\n",
    "\n",
    "#显示随机点\n",
    "plt.scatter(x_data,y_data)\n",
    "\n",
    "# plt.scatter(x_data,y_pred,'r-',lw=3)\n",
    "# plt.show()\n",
    "plt.plot(x_data,y_pred,'r-',lw=3)\n",
    "plt.show()\n",
    "\n",
    "# plt.show()\n",
    "# plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 调用库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import keras\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "# Sequential按顺序构成的模型\n",
    "from keras.models import Sequential\n",
    "# Dense全连接层\n",
    "from keras.layers import Dense\n",
    "# 优化器\n",
    "from keras.optimizers import SGD"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1be21f59160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cost 0.018442066\n",
      "cost 0.006007686\n",
      "cost 0.0060076844\n",
      "cost 0.006007686\n",
      "cost 0.006007686\n",
      "cost 0.006007686\n",
      "cost 0.006007686\n",
      "W [[-0.16559775 -0.53879124  0.6861925   0.5074947  -0.28282335 -0.6565766\n",
      "   0.19891709 -0.15876272 -0.4630702   0.06120215]] b [-0.00530849 -0.00994461 -0.01670682  0.01227816 -0.00684395 -0.01447732\n",
      " -0.01724562 -0.00516949  0.01374609 -0.01344329]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1be2200edd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# import keras\n",
    "# import numpy as np\n",
    "# import matplotlib.pyplot as plt\n",
    "# # Sequential按顺序构成的模型\n",
    "# from keras.models import Sequential\n",
    "# # Dense全连接层\n",
    "# from keras.layers import Dense\n",
    "\n",
    "# # 使用numpy生成100个随机点\n",
    "# x_data=np.random.rand(100)\n",
    "# noise=np.random.normal(0,0.01,x_data.shape)\n",
    "# y_data=x_data*0.1+0.2\n",
    "\n",
    "#显示随机点\n",
    "plt.scatter(x_data,y_data)\n",
    "plt.show()\n",
    "\n",
    "# 构建一个顺序模型\n",
    "model=Sequential()\n",
    "# 在模型中加一个全连接层\n",
    "# UNITS是隐藏层，input_dim是输入（属于1维变量）\n",
    "# 1-10-1\n",
    "model.add(Dense(units=10,input_dim=1))\n",
    "#加个隐藏层\n",
    "model.add(Dense(units=1,input_dim=1))\n",
    "\n",
    "# sgd 随机梯度下降法\n",
    "# mse 均方误差\n",
    "sgd=SGD(lr=0.3)\n",
    "model.compile(optimizer=sgd,loss='mse')\n",
    "\n",
    "# 训练30001个批次\n",
    "for step in range(3001):\n",
    "    # 每次训练一个批次\n",
    "    cost=model.train_on_batch(x_data,y_data)\n",
    "    # 每500个打印一次batch\n",
    "    if step%500==0:\n",
    "        print('cost',cost)\n",
    "# 打印权值与偏置值\n",
    "W,b=model.layers[0].get_weights()\n",
    "print('W',W,'b',b)\n",
    "\n",
    "# 输入网络\n",
    "y_pred=model.predict(x_data)\n",
    "\n",
    "#显示随机点\n",
    "plt.scatter(x_data,y_data)\n",
    "\n",
    "# plt.scatter(x_data,y_pred,'r-',lw=3)\n",
    "# plt.show()\n",
    "plt.plot(x_data,y_pred,'r-',lw=3)\n",
    "plt.show()\n",
    "\n",
    "# plt.show()\n",
    "# plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 需要激活函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# 两种方法\n",
    "import keras\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "# Sequential按顺序构成的模型\n",
    "from keras.models import Sequential\n",
    "# Dense全连接层\n",
    "from keras.layers import Dense,Activation\n",
    "# 优化器\n",
    "from keras.optimizers import SGD"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAD8CAYAAABzTgP2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3X2QXNV55/Hvo1EjRhAzwiiJPSCkxAoEFhsVE5wtVeyAwZKXtaQytpFfdkmVt6hsQm35JaoMFW8g2IknVnnxVi1ba63DFsnaizA4ihKc0mILUrVs5Gi0ErAiKMhgYEauWFlJ7MYa0Lw8+0f3HW733HPv7e7b779PlUrT3bd7Tk/3vc95ec455u6IiIhElnW6ACIi0l0UGEREpIoCg4iIVFFgEBGRKgoMIiJSRYFBRESqKDCIiEgVBQYREamiwCAiIlWWd7oAjbjkkkt87dq1nS6GiEhPOXTo0D+4++qs43oyMKxdu5bJyclOF0NEpKeY2ct5jlNXkoiIVCkkMJjZZjM7ZmbHzWw84fFfN7NnzeyImf0PM7sq9thdlecdM7NNRZRHREQa13RgMLMh4H7gA8BVwMfiF/6Kb7r7Ne5+LfBl4N9VnnsVsB24GtgM/MfK64mISIcU0WK4Hjju7i+6+zngIWBr/AB3/7+xmxcA0VrfW4GH3P0Nd38JOF55PRER6ZAiBp9HgVdjt6eAd9ceZGa/CXwWOA+4MfbcAzXPHU36JWZ2B3AHwJo1a5outIiIJCuixWAJ9y3Z/cfd73f3nwd+G/h8Pc+tPH+Xu4+5+9jq1ZnZViIi0qAiAsMUcFns9qXAiZTjHwK2NfhcERFpsSICw0FgvZmtM7PzKA8m740fYGbrYzdvAV6o/LwX2G5mK8xsHbAe+JsCyiQiIg1qeozB3efM7E5gHzAEPODuR83sXmDS3fcCd5rZTcAscBq4vfLco2b2MPAcMAf8prvPN1smERFpnLkndul3tbGxMdfMZxGR+pjZIXcfyzpOM59FRKSKAoOIiFRRYBARkSo9ubpq0fYcnmbnvmOcODPD20eG2bHpCrZtSJxnJyLS9wY+MOw5PM1d336WmdlyMtT0mRnu+vazAAoOIjKQBr4raee+Y4tBITIzO8/Ofcc6VCIRkc4a+MBw4sxMXfeLiPS7gQ8Mbx8Zrut+EZF+N/CBYcemKxguVW8BMVwaYsemKzpUIhGRzhr4wedogFlZSSIiZQMfGKAcHBQIRETKBr4rSUREqqnFICLSRbphwq1WVxUR6RK1E26hvM2lA6MFBAmtrioi0mOSJtxGVfdoVYY9h6dbXg4FBhGRLpE1sbZdqzIM7BhDN/TjiYjEvX1kmOmM4NCOVRkGssUQ9eNNn5nBaW8TTUQkJGnCba12rMpQSGAws81mdszMjpvZeMLjnzWz58zsGTP7npldHnts3syOVP7tLaI8WbRwnoh0o20bRvnSh65htHLxt5rH27UqQ9NdSWY2BNwP3AxMAQfNbK+7Pxc77DAw5u5nzexfA18Gbqs8NuPu1zZbjnpo4TwR6VbxCbed6vIuYozheuC4u78IYGYPAVuBxcDg7k/Ejj8AfLKA39uwUD+eFs4TkW7SqVUZiuhKGgVejd2eqtwX8ingL2O3zzezSTM7YGbbQk8yszsqx02ePHmyqQJr4TwRkbAiWgy13WDwZupt9YFmnwTGgPfG7l7j7ifM7OeA/Wb2rLv/YMkLuu8CdkF5glszBdbCeSIiYUUEhingstjtS4ETtQeZ2U3A7wDvdfc3ovvd/UTl/xfN7ElgA7AkMBQt1ERTGquIDLoiAsNBYL2ZrQOmge3Ax+MHmNkG4GvAZnf/cez+VcBZd3/DzC4BNlIemO6I0P7Pky+f4onnTypYiMhAaDowuPucmd0J7AOGgAfc/aiZ3QtMuvteYCdwIfAtMwN4xd23AL8IfM3MFiiPd0zUZDO1VSiN9RsHXlkyLR1QcBCRvlTIzGd3/w7wnZr7fjf2802B5/1P4JoiylCEULpq7YBGNOdBgUFE+tFALokRGkfIMx09ojkPItKvBm5JjLTlMJLSWJNSrkBzHkSkfw1cYEhbDiM+Hd0or3/+iV9eozkPIlK4PYen2Tixn3Xjj7FxYn9XrdU2cF1JWcthJKWxjl1+sVJYRaQwoQxI6I6kloELDI0sh9Gpaeki0p+yei46beC6krQchoh0Wrcv5DlwLYa05TA061lE2qHbF/IcuMAAyV1D3d7nJyL9Y8emK6quN1Ddc9HpSurAdSWFaPMeEWmXpAzIL33omsWei07vMDmQLYYk3d7nJyLdrd5afiippRsGphUYKrL6/DrdtBOR7tVsV3T8+hLaU6CdlVQFhoq0Pj+NP4hImnpq+bWVzBuuXM2jh6aXPL9WOwemNcZQkdbnp/EHEUmTtys6afzgGwdeyQwK7U6pV4shJmkT7s/sPtIVTTsR6V5500+TKplp21Fa5TXa3XWtwJCgtusopFtyjkWks7LSTyP1VCZHR4Z5avzGwspYj4EPDEmDyklRvZZmS4tIJO8+8qGWhVHdcuj09cXc0xoy3WlsbMwnJyebfp2klsFwaSgzKIwMlzCDM2dnlaEkIqnilc+Lhkv85Nwcs/NvXneHS0Pcet0of/H0jzgzMwvAqpUl7v7g1YVfV8zskLuPZR030IPPoUHlIQvtwlD2xtwCp8/OdmzyiYj0htrB5jMzs+DlC388yWXs8ot5Y25h8Xmnz8529LpSSGAws81mdszMjpvZeMLjnzWz58zsGTP7npldHnvsdjN7ofLv9iLKk1eov2/ePbhBz5CZMpREJNOew9N87uGnl1wvZheclect56WJW3hq/MauzHxsOjCY2RBwP/AB4CrgY2Z2Vc1hh4Exd38n8Ajw5cpzLwbuBt4NXA/cbWarmi1TXqHB42iDntrgMFwaYj7Q9aYMJRGJRC2F0PVi+sxM1eY83bbyQhEthuuB4+7+orufAx4CtsYPcPcn3P1s5eYB4NLKz5uAx939lLufBh4HNhdQplzSluD+4rZruO+2a5fMa1i1spT4WspQEpFIngSWeDd06PrRqetKEVlJo8CrsdtTlFsAIZ8C/jLluW0bxc3KJKhdy2TP4Wn+8fW5Ja9TGjJlKInIoqTMoyRRd1HedNd2KSIwJHXHJ7afzOyTwBjw3gaeewdwB8CaNWvqL2VAPbuz7dx3jNmFpcW74LzlykoSEaBcgaxNP01z4sxM7nTXdikiMEwBl8VuXwqcqD3IzG4Cfgd4r7u/EXvur9Y898mkX+Luu4BdUE5XbbbQjQj1971WSTETkcESmgdVzwUq6i7qpi2EixhjOAisN7N1ZnYesB3YGz/AzDYAXwO2uPuPYw/tA95vZqsqg87vr9zXlbqtH1BEOie0b0LebiTo/ES2kKYDg7vPAXdSvqD/LfCwux81s3vNbEvlsJ3AhcC3zOyIme2tPPcU8AXKweUgcG/lvq6UNFhdWmacPTfHuvHHqrIMRKS/NToPKrJqZWlxoc5uM9AznxuRNYsx6lsc1Yxokb62bvyx3F1GpWXGhecvX7JaQrv3eck783ng10qqV7wfcOPE/sUp7JHoi6I9G0T6W2jdo1qh5S26eZ+XgV4So1lZk080I1qkfyV1LSdZGcha7LbZznEKDE3IM+isGdEi/WnbhlFuvW40uHxOpN5Zzd1wzVBgaEKeGoMylkT61xPPn8wcZ6g3m7EbrhkKDE2IbwcKS2frDZeGuOHK1Wyc2K+sJZE+lFW7T0tHTVuSp9M0+NykpO1AQ5t8d9Pgkog0L20AOiszsdtmO8cpXbUJWalmGyf2J35pOrlln4jUL3Suhzb76tr5CUpXba08qWbdPLgkIvnkOde7sdbfDAWGBqWlmkVfilAzsxsGl0Qkn6xzvZvWOCqKBp8blKc1oCU0RHrfILb8FRgalCfVLJ61ZMDIcAkM7Rct0kO6Oa20VRQYGpQ31WzbhlGeGr+RlyZu4YIVy6vWVYLumekoIsm6Oa20VTTG0KCsQaekLIZBbJKK9Lp+HWBOo3TVFgilsJ1fWsbps0s39cmTvtruVRhFBlXWudbL56LSVTvo9/78aGIWw4rlyxguDS0JGNHs6LQvYreuwijST7LOtUE5FzXGULA9h6cTWwVQ3gI0Phg9OjLMrdeN8uih6SW7QMUHpLt5FUaRfpJ1rg3KuagWQ0Gi5mXa+uxvHxlekvO8cWJ/5nwIjU2IFCOrGyh0Tk2fmQmuZJD2vF6lFkMB4nu/pom+XPHWQJ6L/iCmy4kULbRHc/x8TDunps/MBJfY7rdzsZDAYGabzeyYmR03s/GEx99jZv/LzObM7MM1j81X9oFe3Au61yQ1L0Nqv4x5LvqDmC4nUrQ83UBZS+k7S1dRNuCGK1cXV9Au0HRgMLMh4H7gA8BVwMfM7Kqaw14Bfg34ZsJLzLj7tZV/W5otTyfU24ycmZ3ncw8/zZ7D07lmRwNLxia6dZEukW6Vp3Veu5R+ktrg4MCjh6b7aqJqES2G64Hj7v6iu58DHgK2xg9w9x+6+zPAQgG/r+s00oycd1/MZsgzOxpYnCj31PiNCgoidQqdpxcNl6r2TIHyuRYKDkNmSzbn6bcB6CICwyjwauz2VOW+vM43s0kzO2Bm2wooT9uFunq+etu1qTWP+CCzZkeLtFaodf6Tc3OJ4w6h83o+MPernwagiwgMSeMx9cyaW1OZcPFx4Ktm9vOJv8TsjkoAmTx58mQj5WyZ2jWR4l09WX2WtV8mZSCJNGfP4enEXROTztMLzw9XxELndaiy108D0EWkq04Bl8VuXwqcyPtkdz9R+f9FM3sS2AD8IOG4XcAuKM98bqK8LRFaeje673MPP51Y01hmxrrxxxZT57RUt0jjsiag1Z6n68YfS3ydqCIWOq+TVjbop2SQIloMB4H1ZrbOzM4DtgO5sovMbJWZraj8fAmwEXiugDJ1lW0bRvnKR9+V2HKYd69qwt5w5WplIIk0qN4JaI2kgqf1EPSLplsM7j5nZncC+4Ah4AF3P2pm9wKT7r7XzH4J+FNgFfBBM/s9d78a+EXga2a2QDlITbh73wUGWLoQFwa1DYiZ2XmeeP4kX/rQNYuT5YbMFr/Yky+f4onnTy7eP++eua+syCCptyt2x6YrGqr99+PmPHFaRK8D9hye5tO7jyQ+ZsBLE7ckLsQX0s17zIq0U9591uMzoC8aLmEGZ87OLtnPuVcXywvJu4ieZj53QFqGUdSErWfSnLKWRMryTAatnQF9ZmaW12cXuO+2axdTwfPMku5nCgwdkJZhFH2B681CUtaSSL7+/zzjEIOyWF6IFtHrgFDm0chwafELHDom7TVFJLv/P884xKCnjavF0AGh5u49W65OPSZEWUsi+YUqUVHq+MaJ/YysLGUe08/dSgoMHZCnuZt0zCd/ec3i5Jr4rMLzS/oYRfIKVbriqeP/+PocpaGlc3dr08v7NTgoK6lL1JMBEdo6VJlJItX2HJ7mnr1HOTNT3jxr1coSd3+w3DKPzrdlldTvWiPDJS5YsTz1mDzb8nYTZSX1kHozIAZ9YEwkjz2Hp9nxracXgwKUF6fc8cjTwJuLUi4EKsevzcxmHtOvYw4KDF2g3gv9oA+MieSxc98xZheWXtBn573q3Moz+3nQNstSYOgC9V7oB+1LKtKItIpS/LE8cx8GbbMsBYYuUO+FftC+pCKR0MqpSdIqSvHHGk0G6ecxPQ0+d4G0wWQgcVC6H6fri6SpN+kiGmOo7U4qDRk7P/yugTxf8g4+a4JbF6hdYC+60AOZSwjDmxlNn9l9pOq5ChzST9LG4tKWvI9nJS2z6jEGnRPJ1GLoMvGWQJ4UuaRaVGmZQeUEiCidVXrduvHHEncAixaeTJO3tdHvLXGlq/ag2rTVPFsIJtWiZhdc24NK32km6SJP5t+gL5wXp8DQRfKuqBo/EepJUVU6q/SyepIuagepQ+uOZVWyBrVCpTGGLpLnwl17ItSz2J7SWaWXhcbiart6krb3NJI3os9TyRrECpUCQxcJXeSHzFhwTzwRknagCo0xRAGl3/tRpX/l2TktqebvsCQ45K1kDWKFSoGhi4S2GUwbNE7LaIpnY0QL7WVtli7SK0IVnFAN3yknboQqRI1u89mPCgkMZrYZ+PeU93z+urtP1Dz+HuCrwDuB7e7+SOyx24HPV25+0d0fLKJMvShvUznpeUnN6TfmFhZvnz47y13ffpbzS8vqSvkT6UZpFZxQzT9rwbtGz79+1HS6qpkNAX8H3AxMAQeBj7n7c7Fj1gJvAX4L2BsFBjO7GJgExigH9EPAde5+Ou139nO6alHSBtyS5En5E+kWoe/3yHCJe7ZcrdWHA9qZrno9cNzdX3T3c8BDwNb4Ae7+Q3d/Blioee4m4HF3P1UJBo8Dmwso08Crd8BsEPtRpXeFvt9R1+kgLV/RCkV0JY0Cr8ZuTwHvbuK5+vQKUE+20qD2o0rvSvt+79x3jKfGb8wMBErCCCuixbB0m6PkzLCmnmtmd5jZpJlNnjx5MnfhBlXW1qBDZqpNSc9Kq8jkaS1rMlu6IloMU8BlsduXAifqeO6v1jz3yaQD3X0XsAvKYwz1FnLQRBf6T+8+kvj4grvGFKQnRTX9kGZnQquSVExgOAisN7N1wDSwHfh4zufuA/7AzFZVbr8fuKuAMgnl4LBz37FCc7PV/Jai1LudbfRdDk1Wg/zdoprMlq7priR3nwPupHyR/1vgYXc/amb3mtkWADP7JTObAj4CfM3Mjlaeewr4AuXgchC4t3KfFKTIvRvU/Jai1PNdih8L4aAwZLZY68/6Tmqzq3RaXbXH5al1FVXLD6UI9tqG6NJ59XyX6k29huz01Hr3dugX2o9hAOSdxZxnGYE81PyWoqR9l+IVmYuGS4spqPXIGi/QZLZ0Cgw9rN0DaFpLRooS+i5dNFyqquw0EhQiWRWWoipM/UjLbvewdtfgtde0FCX0XTIj19LzUZ776Mgwq1aWEo9RhaVxajH0sGZr8PWOPaj5LUUJfZdC6dW17rvt2qqtbbX4XbE0+NzDkk6IKJVvNEf6X6PPFWmFPYen+czuI5mzY5MGqJVGnY8GnwdAvNZVm99dOxBde+KcPTeXuGZ90nNF2mHnvmOZQSHUEtB4QbEUGHpcdEIkpfTFtyWszV7K0ulZoKoB9rekzzdtbMxA34M2UmDoE2kD0Xn3ks77mq2mzYT6W+jzHVlZ4vTZ5CwkBYX2UmDoE2kD0Y1e4OsZxI7vFrdqZYm7P3h1wyex1rHpTXlbeaHPd8XyZQyXhhIrMaoctJfSVftEWipp6AI/MlxitPJY7TK30XP3HJ5m48R+1o0/xsaJ/UuWGthzeJod33q6Kt/89NlZdjzydMNLZWgiXe+pZ4mLtL0UZmbnGbKkRZeru0altdRi6BNZqaRJ6Xz3bLl68TnTZ2YYMmPefTErqfZ58Vpb/HlJZuc9Vw0/qZapiXS9J9QKuGfv0dyfb2Q+JVNSlYP2UGDoI6HMjFDQgOoL/7z7YkshGtAOnexvzC1kjltkncShvuZbrxvl0UPTykvvIWmtgKg1mfb55qXKQXsoMAyIpKARuvBHNf2s7ROzZJ3EoVrmE8+f5EsfukZZST0k746BSZ9v3plUqhy0jwLDAMvqy69ne9BapSHLPInTfr/y0nvLjk1XLOmuDIl/vmmT2kaGS1ywYrkqBx2gwDDAsvryk0724dIQ55eWBdMKIX9WksYSuls9c0mSuivPnptL/J4sM2Pd+GOLxyQFBQPu2dJ4Zps0R4FhgIUu/FFNPzop46mo55eWccs735Y4BlDvWvZZv186JzT+M/nyKZ54/mRisKht5SUtuwJvDi6ntUad+tNSNSmyOAoMA6b25Ln1utHgiR55Y25h8efTZ2d59NB0ruflKUeUnhjPhtLJ3Bnx78ayymcSNzM7zzcOvJJr6ZSkz3co4TVDRutsNWpSZLEUGAZI0snz6KHp1Jp+2gBxo7u21ZajNhtK2qt2giKEU0Zr702aeBj6fPNmITXSatSkyGIVMsHNzDab2TEzO25m4wmPrzCz3ZXHv29mayv3rzWzGTM7Uvn3n4oojyRLO3lCWjHZrJFySGtEF/EiN8QJfb6hiWvRREuj3FJoZHtNTYosVtMtBjMbAu4HbgamgINmttfdn4sd9ingtLu/w8y2A38I3FZ57Afufm2z5ZBsjZw8rRgg1kncPRpdRyuu9rsQ+hyTWg7RRMtma/VKZChWES2G64Hj7v6iu58DHgK21hyzFXiw8vMjwPvMAtUHaUraEhahkyTt5ElaagPg7Lm5hpe8aKQc0hpZwTiq5YdO1qRun9DnGLUGmm0dJNHugsUqIjCMAq/Gbk9V7ks8xt3ngNeAt1YeW2dmh83sr8zsVwooz8DKWq+mkZNn24ZRvvShaxgZrt4+8fTZ2eBaOFl0ErdW1vpWcWnBeLg0xFc++i5GR4YTU0qHzBIv7Emfr1H+Pu7cd4wdm67gpYlbeGr8xsL6/6PvaSuCziAqIjAkVSZqv0ehY34ErHH3DcBngW+a2VsSf4nZHWY2aWaTJ0+ebKrA/Sqr777Rk2fbhlEuWLG017HRcQGdxK1Tz2J2EG4RrlpZWvxMQq2KBffgEizR5wskbiDVaGszzbYNozw1fmPhQWcQFZGVNAVcFrt9KXAicMyUmS0HLgJOeXlf0TcA3P2Qmf0A+AVgyb6d7r4L2AXlrT0LKHffydN33+iM4qLHBZLKUfTy3YOo3uycPPt4N9J/n2cDKX2u3auIwHAQWG9m64BpYDvw8Zpj9gK3A38NfBjY7+5uZqspB4h5M/s5YD3wYgFlGkhFDsDVzncIbaJS1LhAtHz37MKbMf/02Vk+vfsIn959RHMccmokgGdVFuqdiBj/7oRqcEo06G5NBwZ3nzOzO4F9wBDwgLsfNbN7gUl33wv8EfAnZnYcOEU5eAC8B7jXzOaAeeDX3f1Us2UaVEXNJE6a71BaZpSGjNn5N0/1IscFdu47VhUUatU7YWlQZ8GmVQ4a/ZvkaVVEQrOdk8oj3cs850zEbjI2NuaTk0t6m4RiLohJzX9o7aJm68Yfy7XK5ujIcObEuqSLUyNLdvSiz+95tmp2MpTfe2gp86L/JqHvTtygfBbdyMwOuftY1nGa+dxnmlmVNAoqoRP7tZlZjtz9/qrjN07sLyRQ5F3JNU8XxKDOgt1zeJpHD00nzk7+b99/NXGJi6L/Jmmfj6G9m3uFAoMA+boA4s3/tLVpILnbIR54atdH2rHpiiVjDFllCEnrZ+/nLqa0yWqhJS4a6etP+xuGAnyelp50DwUGAbJnwNaOJ4Rq5Xd9+xlen11Ykp44+fKpqq6M+Aqbd3372fLGLR9515I1e9LKEBK6OF00XOqqhdZqL7A3XLm6qYUJG7nI19vXn7VYnVbM7Q8KDAKkX1SSMoJCx8/MLiTcN89/PfBK8PWjLo3a3PNGa/ehi5MZicHscw8/DbQ3OCRdYON/o0aCVr0bK+W9YOdZdbX2b9ivrbJBocFnAcKDhqEugDyDjPUw4KWJWxIfayRAJD0ntFMYtH9ANO/fr54umLwZQVBOJDCDM2dnE/+m8W6/+AS1NBpU7n55B58LWV1Vel+9y1SEZsw2KtSlUe9M3kjSLNi0bpN2r+6at9unnu6h2hnHISPDJd6YW+D02dnEv2n8bw75ggJohdx+osAgQP3LVCQdv2plKfHYLGkBqMglurOCWaMDsXnXJYrL27d/0XCprtePAuIPA60vgDMzs6l/02ZWXJ0+M1PX30G6k8YYZFG9qa55t3KMq93NK2tGc5FLcUS/43MPP52YpVP0QGyarK4tgNIy4yfn5hYH4+sddxitc8wh+ps2Oyu504P60jy1GKQwSYunxUWrdf5w4hZ+8KV/xg9zLHZW9BLd2zaM8pWPvquQ1V2bac1s2zCaGhRGR4a58PzlVTPNo9e/Z+/RXOULdQ+GWnbR7OhlGSviD5eG+OQvr0ltfalbqbcpMEih4l0Z9912bdMrqKYt4dxol0VRq7s225oJjQVEA85nEtamgnJXUJ73HXqfd3/w6sSAccOVq7nr288mtqaiUBG9xhe3XZM5nqH1kHqXspKk66VlyHQyEyaUWTRkxoJ7ZgZV1tIdaZlLzU4YS8raCs16HzLjKx99V/B95M1o6+fJhb0ib1aSAoP0jGYvxEXLM6aSFbjSLpZ7Dk/z6d1HEp+Xlt7bqNB6VVmpxEmTEmvf9yCvX9VNtFaS9J20vYQhPOjZqppq7WSu0OSvtPWI0gb8t20Y5ff+/Gjhy52H/h71LtseCoxJ+2gM6vpVvUpjDNIWjaZ1xuW5GNYOejY6DyKv+HyJhSbWIwr9fULjAY0uMZH296h3LksorXXlecuXXOyL3uhJWkstBmm5rLTOvDX6pKUuksQvNq2oqTZT4056LpCZ9ho956LKjOXP7D6yuH9yPe8j7e8RjQfkbV3Vc7EvchMpaT0FBlmiyK6XPYenE+cNxGv2eecC5Om6geqLTb011dB7Dw2Ax8ubtYBcKECeX1qWGryif83Mm8j796hnLks9F3strtdbFBikShEXn9rXSlvyuZk9ikNZSvGLTT0Xr9B7r10ZNmm/gzw17tB7DbWAai/iWfMm8gTzImvu9Vzstbheb1FgkCpFdr1kLa3w9pHhhmr08YuRw2JwSJpFXc/FK/Tekza5qTVdU+OOWhjxLp96+9NrL9ah50cBLE8wL7LmXu/FvplNpKS9Chl8NrPNZnbMzI6b2XjC4yvMbHfl8e+b2drYY3dV7j9mZpuKKI80rshBwrTnRBejemc2J128o6AQmkW9YvmbX/Nl9magqx2Azsp6SmOQuAhdfIB3JDDjeGS4lGvQN/Q3GTLLPQO7qMl98derXaxQel/TLQYzGwLuB24GpoCDZrbX3Z+LHfYp4LS7v8PMtgN/CNxmZlcB24GrgbcD3zWzX3D3xlbwkqYV2dUQeq0hs6qLUT012DyBK21CXLRBXFKtut79DOIcFltVoZbHiuXLGC4NLXmv92y5GsiueYdq+3m7oiKquUuWIloM1wPH3f1Fdz8HPARsrTlmK/Bg5edHgPeZmVXuf8jd33D3l4DjldeTDqmdKm2hAAAKZElEQVQ3ZbGR14rPoq23BpvVwqhnyehog5koRfSGK1c3tZR41iJ0r83MBt9r3pp3vPWzamUpdVkKZfxIo4oYYxgFXo3dngLeHTrG3efM7DXgrZX7D9Q8V1WZDipykDDva+WpwWYti3HDlasb2jwoPjnu0UPT3HrdKE88fzL1dYYysqHSWl2N1taTJpO9XtktTxk/UrQiAkPSUoy1Z03omDzPLb+A2R3AHQBr1qypp3xSpyK7Gop4rawB5xuuXF2VNdSomdl5nnj+JE+N35i6/Ma8e2o2VCsu1EXOP4jT+kWSpIjAMAVcFrt9KXAicMyUmS0HLgJO5XwuAO6+C9gF5bWSCii39IisAeeNE/ubDgqRaNXWULCJWgpp2VBJLaUbrly9mKXUyAW4yPkHkSJTk6W/FDHGcBBYb2brzOw8yoPJe2uO2QvcXvn5w8B+L6/etxfYXslaWgesB/6mgDJJH0lL08zTfRQ1S0eGS6xaWcIo1/xD4t1K0XhA0vFp2VDxMYMdm67g0UPTTS3LUfS+FFDs7njSX5puMVTGDO4E9gFDwAPuftTM7gUm3X0v8EfAn5jZccothe2V5x41s4eB54A54DeVkSS1Qn320b4MaUJLRmetjBrvVoLyyqNJ8qTxFjE3pBXdU1q/SEIKmeDm7t8BvlNz3+/Gfn4d+Ejgub8P/H4R5ZD+lHRRrO3jD1lwT51BnbRkdCR+gWwmjbeIC3DaQH6j4wRav0hCNPNZul7SRTFv9lHaRS6acxAKDPHnNlJjjy7YoQBW7wU4aRwh7zhBUvBQNpOEaNlt6Qm1ef5pW0pG8lzk0mrt8efWO9+idj5FI2XLI884QWgmNlDoLGjpH2oxSE9Kqu2WlhkXnr+cM2dnc3ephFofI8OlhuZbRNLWiUpa06lRebqpslJdFQiklgKD9KSiJuKFAoxZecA52v8gLdgkddOELtgGTe3VXCvPOIEGmaVeCgzSs4qYPJe0Ec5Pzs0tbqcZH39I6r8P9fGPrCwFt+QsclJZnnECDTJLvTTGIAMvPn5xwYrlzM6H851q++9D3TTuJK4TdcOVqwvdajTP2EeR61/JYFCLQSQmT/dK/Ji0BfPuu+3aJS2DVmw1mtVy0iY5Ui8FBpGYPKmw8S6YehfM+8zuI4mvmbRseJEXcS21LfVQV5JITFK3S1xtF0y93TT1LBsedTV9ZvcRPr/n2TrfiUjjFBhEYmr77OPrKyX139c7vyErkIQWDPzGgVcaHocQqZd5jm0Lu83Y2JhPTk52uhgiDUnrKlo3/lhwpnS0YJ9Io8zskLuPZR2nMQaRNkvr708b49C8A2kXdSWJdJEdm65I3L0KNO9A2kctBpGCFJFNtG3DKJMvn+IbB14J7hBX1O8SCVFgEClAkbuhfXHbNYxdfnHwwq+d16TVFBhEClD0xLW0cYhWTJITidMYg0gB2rlQnRbFk1ZTYBApQCv2ZO6G3yWDSYFBpADtXKgu6XcZcMOVqwv/XTKYmgoMZnaxmT1uZi9U/l8VOO72yjEvmNntsfufNLNjZnak8u+nmymPSKfUOwO62d9163WjVWmtDjx6aFqzo6UQzQ4+jwPfc/cJMxuv3P7t+AFmdjFwNzBG+ft7yMz2uvvpyiGfcHdNY5ae186F6p54/uSSGdIagJaiNNuVtBV4sPLzg8C2hGM2AY+7+6lKMHgc2Nzk7xUZaBqAllZqNjD8jLv/CKDyf1JX0Cjwauz2VOW+yH+pdCP9WzMLTfrEzO4ws0kzmzx58mSTxRbpbRqAllbKDAxm9l0z+98J/7bm/B1JF/uoFfwJd78G+JXKv38RehF33+XuY+4+tnq1Btmkd+w5PM3Gif2sG3+MjRP7CxkH0K5s0kqZYwzuflPoMTP7ezN7m7v/yMzeBvw44bAp4Fdjty8Fnqy89nTl//9nZt8Ergf+OHfpRbpcq2Ypa1c2aaVmB5/3ArcDE5X//yzhmH3AH8Qylt4P3GVmy4ERd/8HMysB/xz4bpPlEekqrZylrF3ZpFWaHWOYAG42sxeAmyu3MbMxM/s6gLufAr4AHKz8u7dy3wpgn5k9AxwBpoH/3GR5RLqKBomlFzXVYnD3/wO8L+H+SeBfxW4/ADxQc8xPgOua+f0i3S5tT2iRbqWZzyItpEFi6UVaXVWkhTRILL1IgUGkxTRILL1GXUkiIlJFgUFERKooMIiISBUFBhERqaLAICIiVRQYRESkigKDiIhUUWAQEZEqCgwiIlJFgUFERKooMIiISBUFBhERqaLAICIiVczdO12GupnZSeDlTpejQZcA/9DpQrSR3m9/0/vtLZe7++qsg3oyMPQyM5t097FOl6Nd9H77m95vf1JXkoiIVFFgEBGRKgoM7ber0wVoM73f/qb324c0xiAiIlXUYhARkSoKDG1gZheb2eNm9kLl/1Upx77FzKbN7D+0s4xFyfNezexaM/trMztqZs+Y2W2dKGszzGyzmR0zs+NmNp7w+Aoz2115/Ptmtrb9pSxOjvf7WTN7rvJ5fs/MLu9EOYuQ9V5jx33YzNzM+i5LSYGhPcaB77n7euB7ldshXwD+qi2lao087/Us8C/d/WpgM/BVMxtpYxmbYmZDwP3AB4CrgI+Z2VU1h30KOO3u7wDuA/6wvaUsTs73exgYc/d3Ao8AX25vKYuR871iZj8F/Bvg++0tYXsoMLTHVuDBys8PAtuSDjKz64CfAf57m8rVCpnv1d3/zt1fqPx8AvgxkDnppotcDxx39xfd/RzwEOX3HRf/OzwCvM/MrI1lLFLm+3X3J9z9bOXmAeDSNpexKHk+WyhX4L4MvN7OwrWLAkN7/Iy7/wig8v9P1x5gZsuArwA72ly2omW+1zgzux44D/hBG8pWlFHg1djtqcp9ice4+xzwGvDWtpSueHneb9yngL9saYlaJ/O9mtkG4DJ3/4t2Fqydlne6AP3CzL4L/GzCQ7+T8yV+A/iOu7/a7RXLAt5r9DpvA/4EuN3dF4ooW5skfUC16X15jukVud+LmX0SGAPe29IStU7qe61U4O4Dfq1dBeoEBYaCuPtNocfM7O/N7G3u/qPKxfDHCYf9U+BXzOw3gAuB88zsH909bTyiIwp4r5jZW4DHgM+7+4EWFbVVpoDLYrcvBU4Ejpkys+XARcCp9hSvcHneL2Z2E+XKwXvd/Y02la1oWe/1p4B/AjxZqcD9LLDXzLa4+2TbStli6kpqj73A7ZWfbwf+rPYAd/+Eu69x97XAbwF/3I1BIYfM92pm5wF/Svk9fquNZSvKQWC9ma2rvJftlN93XPzv8GFgv/fupKHM91vpXvkasMXdEysDPSL1vbr7a+5+ibuvrZyrByi/574JCqDA0C4TwM1m9gJwc+U2ZjZmZl/vaMmKl+e9fhR4D/BrZnak8u/azhS3fpUxgzuBfcDfAg+7+1Ezu9fMtlQO+yPgrWZ2HPgs6ZloXS3n+91JuaX7rcrnWRsoe0LO99r3NPNZRESqqMUgIiJVFBhERKSKAoOIiFRRYBARkSoKDCIiUkWBQUREqigwiIhIFQUGERGp8v8B4gLYUI5w96sAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1be20cdebe0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cost 0.012879512\n",
      "cost 0.005837915\n",
      "cost 0.005321978\n",
      "cost 0.0034792766\n",
      "cost 0.00085649197\n",
      "cost 0.00045125774\n",
      "cost 0.00044154993\n",
      "W [[-0.02637528 -0.2525075   0.11272071  0.95841706  0.48063418 -0.5148159\n",
      "  -1.5582908   0.34286433 -0.36409232 -0.7066393 ]] b [-0.21625853  0.21162641 -0.01990067  0.3260234  -0.1363374  -0.07799522\n",
      "  0.67644703 -0.01386716  0.08166882 -0.19312617]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1be20c35e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# import keras\n",
    "# import numpy as np\n",
    "# import matplotlib.pyplot as plt\n",
    "# # Sequential按顺序构成的模型\n",
    "# from keras.models import Sequential\n",
    "# # Dense全连接层\n",
    "# from keras.layers import Dense\n",
    "\n",
    "# # 使用numpy生成100个随机点\n",
    "# x_data=np.random.rand(100)\n",
    "# noise=np.random.normal(0,0.01,x_data.shape)\n",
    "# y_data=x_data*0.1+0.2\n",
    "\n",
    "#显示随机点\n",
    "plt.scatter(x_data,y_data)\n",
    "plt.show()\n",
    "\n",
    "# 构建一个顺序模型\n",
    "model=Sequential()\n",
    "# 在模型中加一个全连接层\n",
    "# UNITS是隐藏层，input_dim是输入（属于1维变量）\n",
    "# 1-10-1\n",
    "model.add(Dense(units=10,input_dim=1))\n",
    "model.add(Activation('tanh'))\n",
    "#加个隐藏层\n",
    "model.add(Dense(units=1,input_dim=1))\n",
    "model.add(Activation('tanh'))\n",
    "\n",
    "# sgd 随机梯度下降法\n",
    "# mse 均方误差\n",
    "sgd=SGD(lr=0.3)\n",
    "model.compile(optimizer=sgd,loss='mse')\n",
    "\n",
    "# 训练30001个批次\n",
    "for step in range(3001):\n",
    "    # 每次训练一个批次\n",
    "    cost=model.train_on_batch(x_data,y_data)\n",
    "    # 每500个打印一次batch\n",
    "    if step%500==0:\n",
    "        print('cost',cost)\n",
    "# 打印权值与偏置值\n",
    "W,b=model.layers[0].get_weights()\n",
    "print('W',W,'b',b)\n",
    "\n",
    "# 输入网络\n",
    "y_pred=model.predict(x_data)\n",
    "\n",
    "#显示随机点\n",
    "plt.scatter(x_data,y_data)\n",
    "\n",
    "# plt.scatter(x_data,y_pred,'r-',lw=3)\n",
    "# plt.show()\n",
    "plt.plot(x_data,y_pred,'r-',lw=3)\n",
    "plt.show()\n",
    "\n",
    "# plt.show()\n",
    "# plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1be24effbe0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cost 0.007068209\n",
      "cost 0.00056262605\n",
      "cost 0.0005384624\n",
      "cost 0.0005315297\n",
      "cost 0.0005308051\n",
      "cost 0.00053075736\n",
      "cost 0.00053075334\n",
      "W [[-0.35320574 -0.55268687 -0.29974347 -0.5755867  -0.4468372  -0.46545228\n",
      "   0.38869816 -0.30972725  0.13329652 -0.00244268]] b [ 0.00352903  0.0020978   0.14993575  0.00670331  0.00228433  0.00694308\n",
      "  0.01986022  0.15488823 -0.06683382 -0.01074758]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1be24a6eac8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# import keras\n",
    "# import numpy as np\n",
    "# import matplotlib.pyplot as plt\n",
    "# # Sequential按顺序构成的模型\n",
    "# from keras.models import Sequential\n",
    "# # Dense全连接层\n",
    "# from keras.layers import Dense\n",
    "\n",
    "# # 使用numpy生成100个随机点\n",
    "# x_data=np.random.rand(100)\n",
    "# noise=np.random.normal(0,0.01,x_data.shape)\n",
    "# y_data=x_data*0.1+0.2\n",
    "\n",
    "#显示随机点\n",
    "plt.scatter(x_data,y_data)\n",
    "plt.show()\n",
    "\n",
    "# 构建一个顺序模型\n",
    "model=Sequential()\n",
    "# 在模型中加一个全连接层\n",
    "# UNITS是隐藏层，input_dim是输入（属于1维变量）\n",
    "# 1-10-1\n",
    "model.add(Dense(units=10,input_dim=1,activation='relu'))\n",
    "# model.add(Activation('tanh'))\n",
    "#加个隐藏层\n",
    "model.add(Dense(units=1,input_dim=1,activation='relu'))\n",
    "# model.add(Activation('tanh'))\n",
    "\n",
    "# sgd 随机梯度下降法\n",
    "# mse 均方误差\n",
    "sgd=SGD(lr=0.3)\n",
    "model.compile(optimizer=sgd,loss='mse')\n",
    "\n",
    "# 训练30001个批次\n",
    "for step in range(3001):\n",
    "    # 每次训练一个批次\n",
    "    cost=model.train_on_batch(x_data,y_data)\n",
    "    # 每500个打印一次batch\n",
    "    if step%500==0:\n",
    "        print('cost',cost)\n",
    "# 打印权值与偏置值\n",
    "W,b=model.layers[0].get_weights()\n",
    "print('W',W,'b',b)\n",
    "\n",
    "# 输入网络\n",
    "y_pred=model.predict(x_data)\n",
    "\n",
    "#显示随机点\n",
    "plt.scatter(x_data,y_data)\n",
    "\n",
    "# plt.scatter(x_data,y_pred,'r-',lw=3)\n",
    "# plt.show()\n",
    "plt.plot(x_data,y_pred,'r-',lw=3)\n",
    "plt.show()\n",
    "\n",
    "# plt.show()\n",
    "# plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
